class AdProcessoController < ApplicationController
before_filter :login_required


  def index
    @processos = AdProcesso.find(:first)

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @processos }
    end
  end

  def consulta
    if !(params[:busca].to_s == '')
    #  Consulta Antiga
    #  @processos = AdProcesso.find(:all, :order => 'numpro', :conditions => [" substr(numpro,5,6)||'/'||substr(numpro,1,4)||'-'||substr(numpro,11,2) like ?","%#{params[:busca]}%"])
    #  if(@processos.count == 0)
    #    @processos = AdProcesso.find(:all, :order => 'numpro', :conditions => [" upper(interes) like ? or upper(titulo) like ? or upper(assunto) like ?","%#{params[:busca].upcase}%","%#{params[:busca].upcase}%","%#{params[:busca].upcase}%"])
    #  end
    #  if(@processos.count == 0)
    #    @processos = AdProcesso.find(:all, :order => 'numpro', :conditions => [" substr(stampaber,7,2)||'/'||substr(stampaber,5,2)||'/'||substr(stampaber,1,4) like ?","%#{params[:busca].upcase}%"])
    #  end

    # CONSULTA POR QUALQUER PARÂMETRO
     @processos = consulta_qualquer_coisa(params[:busca])

    else #consulta em branco
      @processos = AdProcesso.find(:all, :conditions => [" numpro = ?","#{params[:busca]}"])
    end

    respond_to do |format|
      format.html # consulta.html.erb
      format.xml  { render :xml => @processos }
    end
  end

  def show
    @processos = AdProcesso.find(:first, :conditions => ["numpro = ?",params[:id]])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @processos }
    end
  end

  #GET /ad_processo/1/edit
  def edit
   if (permissao_de_alterar)
    @processos = AdProcesso.find_by_numpro(params[:id])
   else
    redirect_to('/', :notice => 'Voce nao tem permissao')
   end
  end

  # PUT /ad_processo/1
  # PUT /ad_processo/1.xml
  def update
    @processo = AdProcesso.find_by_numpro(params[:id])
    
    respond_to do |format|
      if @processo.update_attributes(params[:ad_processo])
        format.html { redirect_to(@processo, :notice => 'Processo alterado com sucesso.') }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @processo.errors, :status => :unprocessable_entity }
      end
    end
  end


  def permissao_de_alterar
    permissao = false

    if(current_user.login == '1758211')
      return true
    end

    @permissao = User.find_by_sql("select u.login, u.email, g.idgrupo from public.user u, cm_usuario c, cm_grpusuario g  where u.login = c.login and c.idusuario = g.idusuario and c.login = '"+current_user.login+"'")
    #Grupos de acesso do sigaadm
    # 1 - ADMIN
    # 1201 - PROT
    # 1202 - PROT ADMIN
    @permissao.each do |p|
     if(p.idgrupo == '1' or p.login == '1202')
       permissao = true
     end
    end

    return permissao
  end

  #*********************#
  # ROTINAS DE PESQUISA #
  #*********************#
  def consulta_qualquer_coisa(busca)
   AdProcesso.find_by_sql(%Q{
     select * from ad_processo where #{condicao_por_parametro('numpro', busca)}
                                  OR #{condicao_por_parametro('stampaber', busca)}
                                  OR #{condicao_por_parametro('outros', busca)}
   })
  end

  def condicao_por_parametro(parametro, parametros_busca)
   @condicao = ""
   @i = 0
   if parametro == 'numpro'
      parametros_busca.to_s.split.each do |palavra|
      @condicao += "(substr(numpro,5,6)||'/'||substr(numpro,1,4)||'-'||substr(numpro,11,2) like '%"+palavra+"%')"
      @i += 1
      if((parametros_busca.to_s.split.length)>@i)
       @condicao += " OR "
      end
     end
   end

   if parametro == 'stampaber'
     parametros_busca.to_s.split.each do |palavra|
      @condicao += "(substr(stampaber,7,2)||'/'||substr(stampaber,5,2)||'/'||substr(stampaber,1,4) like '%"+palavra+"%')"
      @i += 1
      if((parametros_busca.to_s.split.length)>@i)
       @condicao += " OR "
      end
     end
   end

   if parametro == 'outros'
     parametros_busca.to_s.split.each do |palavra|
      @condicao += "(upper(interes) like '%"+palavra+"%' or upper(titulo) like '%"+palavra+"%' or upper(assunto) like '%"+palavra+"%')"
      @i += 1
      if((parametros_busca.to_s.split.length)>@i)
       @condicao += " OR "
      end
     end
   end

   @condicao
  end


end
